using UnityEngine;

/****************************************************
// 功能：继承MonoBehaviou的单例模式
// | Talk To [ 聊来改善地区金融服务环境，助力企业发展 ]
// | Copyright (c) 2021-2025 聊来 All rights reserved.
// | Licensed ( <a href="http://www.apache.org/licenses/LICENSE-2.0">聊来</a> )
// | @Author: 贯彻己道的云 <18970881148@qq.com>
// | DateTime: 2024/12/30 15:33:1
*****************************************************/

public class SingletonPatternMonoBase<T> : MonoBehaviour where T: MonoBehaviour
{

    // 构造方法私有化，防止外部new对象
    protected SingletonPatternMonoBase() {}

    // volatile关键字修饰在字段，当多个线程都对它进行修改时，可以确保这个字段在任何时刻呈现的都是最新的值
    private static volatile T instance;

    public static T Instance
    {
        get
        {
            if (instance == null)
            {
                instance = FindObjectOfType<T>();
            }

            return instance;
        }
    }
}
